package cn.lycode.system.service.impl;

import cn.lycode.common.core.domain.model.SelectIdsDTO;
import cn.lycode.common.core.page.PageResult;
import cn.lycode.common.core.page.PageUtil;
import cn.lycode.common.enums.ErrorEnum;
import cn.lycode.system.domain.dto.syspost.SysPostAddDTO;
import cn.lycode.system.domain.dto.syspost.SysPostListDTO;
import cn.lycode.system.domain.dto.syspost.SysPostUpdateDTO;
import cn.lycode.system.domain.entity.SysPost;
import cn.lycode.system.domain.vo.SysPostVO;
import cn.lycode.system.mapper.SysPostMapper;
import cn.lycode.system.service.SysPostService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
/**
 * 岗位信息表 服务实现类
 * @since 2024-09-03
 * @author lyCode
 */
@Service
@RequiredArgsConstructor
public class SysPostServiceImpl implements SysPostService {

    private final SysPostMapper sysPostMapper;


    //******************自动生成基本增删改查、Excel导入导出*******************//
    @Override
    public PageResult<SysPostVO> listPage(SysPostListDTO dto){
        PageUtil.startPage(dto);
        List<SysPost> list = sysPostMapper.selectSysPostList(dto);
        List<SysPostVO> voList = new ArrayList<>();
        for (SysPost sysPost : list) {
            voList.add(sysPost.buildVO());
        }
        return PageUtil.getPageResult(list, voList);
    }

    @Override
    public List<SysPostVO> listOption() {
        List<SysPost> sysPosts = sysPostMapper.selectSysPostList(new SysPostListDTO());
        List<SysPostVO> voList = new ArrayList<>();
        for (SysPost sysPost : sysPosts) {
            voList.add(sysPost.buildVO());
        }
        return voList;
    }


    @Override
    public int add(SysPostAddDTO dto){
        SysPost sysPost = dto.buildAddEntity();
        return sysPostMapper.insertSysPost(sysPost);
    }

    @Override
    public SysPostVO detail(Long id){
        SysPost sysPost = sysPostMapper.selectSysPostById(id);
        ErrorEnum.INVALID_ID.assertNotNull(sysPost);
        return sysPost.buildVO();
    }

    @Override
    public int update(SysPostUpdateDTO dto){
        SysPost sysPost = dto.buildUpEntity();
        return sysPostMapper.updateSysPost(sysPost);
    }

    @Override
    public void remove(SelectIdsDTO dto){
        ErrorEnum.INVALID_ID.assertFalse(dto.getIds().isEmpty());
        sysPostMapper.removeSysPostByIds(dto.getIds());
    }



}